package com.xiyuan.smartutils.function;

import java.util.function.Supplier;

/**
 * 无参数Supplier
 *
 * @author xiyuan-lgz 2024-07-20 @version v1.0.0 新建与整理
 */
@FunctionalInterface
public interface Supplier0<T> {
    /**
     * 生成实例的方法
     *
     * @param p1 参数一
     * @return 目标对象
     */
    T get();
    
    /**
     * 将带有参数的Supplier转换为无参{@link Supplier}
     *
     * @param p1 参数1
     * @return {@link Supplier}
     */
    default Supplier<T> toSupplier() {
        return this::get;
    }
    
    default T callWithRuntimeException() {
        try {
            return this.get();
        }
        catch (RuntimeException e) {
            throw e;
        }
        catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}
